#include "my_inc/main_login.h"

// 全局初始化随机种子（只需一次）
static void init_random()
{
    srand(time(0));
}

// 生成2或4的随机数（概率均等）
static int Rand24()
{
    init_random();
    return (rand() % 10)>4 ? 2 : FOUR; // 60%概率返回2
}

// 生成0-3的随机数
static int Rand04()
{
    return rand() % FOUR;
}

// 随机写入一个2或4到棋盘上的随机位置
int write_2048(int (*data)[FOUR])
{   
    int count = 0;
    for (int i = 0; i < FOUR; i++)
    {
        for (int j = 0; j < FOUR; j++)
        {
            if (data[i][j] == 0)
                count++;
        }
    }
    while (count > 0)
    {
        int a = Rand04();
        int b = Rand04();
        if (data[a][b] == 0)
        {
            data[a][b] = Rand24();
            return 1;
        }
    }
    //判断左右是否有相同的元素
    for (int i = 0; i < FOUR; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            if (data[i][j] == data[i][j + 1])  //如果有说明游戏还可以继续
            {
                return 1;
            }
        }
    }
    //判断上下是否有相同的元素
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < FOUR; j++)
        {
            if (data[i][j] == data[i + 1][j])
            {
                return 1;
            }
        }
    }
    return 0;
}
